package com.hengpeng.msls.service.userInfo;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.hengpeng.common.persist.QueryResult;
import com.hengpeng.itfinbase.en.TransType;
import com.hengpeng.itfinbase.message.ResponseMessage;
import com.hengpeng.itfinbase.message.userInfo.UserInfoResponse;
import com.hengpeng.itfinbase.persist.Account;
import com.hengpeng.itfinbase.persist.UserInfo;
import com.hengpeng.itfinbase.persist.VerifyCode.VerifyType;
import com.hengpeng.msls.port.client.vo.client.AccountLog;
import com.hengpeng.msls.port.client.vo.client.Passport;
import com.hengpeng.msls.vo.SessionMember;

/**
 * 用户
 * @author wuhaifei
 * @version 1.0, 2012-5-22
 */
public interface UserInfoService
{
    /**
     * 
     * <pre>
     * 刷新SESSION
     * </pre>
     * @param userName
     * @return
     */
    public SessionMember refreshSessionUser(String userName);
	/**
	 * <pre>
	 * 根据手机号码查询
	 * </pre>
	 * @param mobile
	 * @return
	 */
	public List<UserInfo> getUserInfoByMone(String mobile);

	/**
	 * <pre>
	 * 根据用户名查询
	 * </pre>
	 * @param userName
	 * @return
	 */
	UserInfo getUserInfo(String userName);

	/**
	 * 根据用户名获取用户通行证信息
	 * @param userName 用户名
	 * @return
	 */
	Passport getPassprot(String userName);

	/**
	 * 用户登录
	 * @param userName 用户名
	 * @param password 密码
	 * @param storeId 会员店id
	 * @param ipAddress
	 * @return
	 */
	UserInfoResponse doLogin(String userName, String betCardNo, String password, String betPwd, String storeId,
			String ipAddress);

	/**
	 * 用户注册
	 * @param userName 用户名
	 * @param password 密码
	 * @param storeId 会员店id
	 * @return
	 */
	UserInfoResponse doRegist(String userName, String password, String storeId);

	/**
	 * 快捷登陆
	 * @param oprateParams
	 * @return
	 */
	UserInfoResponse shortcutLogin(Map<String, String> oprateParams);

	/**
	 * 短信验证发送
	 * @param mobile
	 * @param username
	 * @param content
	 * @return
	 */
	public ResponseMessage sendSMSForValidMobile(String username, String mobile, String content, VerifyType type);

	/**
	 * 查询资金明细
	 * @param userName 用户名
	 * @param beginTransTime 开始时间
	 * @param endTransTime结束时间
	 * @param transType 交易类型
	 * @param pageIndex 页码
	 * @param count 查询记录数
	 * @return
	 */
	QueryResult<AccountLog> findAccountDetail(String userName, Date beginTransTime, Date endTransTime,
			TransType[] transType, int pageIndex, int count);

	/**
	 * <pre>
	 * 验证手机号码绑定
	 * </pre>
	 * @param username
	 * @param mobile
	 * @param code
	 * @param type
	 * @return
	 */
	public ResponseMessage doValidMobile(String username, String mobile, String code, VerifyType type);

	/**
	 * <pre>
	 * 发送邮箱验证
	 * </pre>
	 * @param email
	 * @param username
	 * @param url
	 * @param returnUrl
	 * @return
	 */
	public ResponseMessage sendMailForValid(String email, String username, String url, String returnUrl);

	/**
	 * <pre>
	 * 确定绑定邮箱
	 * </pre>
	 * @param username
	 * @param verifyCode
	 * @param email
	 * @return
	 */
	public ResponseMessage doValidEmail(String username, String verifyCode, String email);

	/**
	 * <pre>
	 * 绑定手机号码
	 * </pre>
	 * @param request
	 * @return
	 */
	public ResponseMessage bingMobile(String userName, String mobile);
	
	/**
	 * 查询账户信息
	 */
	public Account getAccountByUserId(Long userId);
    UserInfo getUserInfoById(long id);

}
